Stepping motors are increasingly being used in many industrial applications for positioning control. Stepping motors can be controlled in a closed loop fashion, like a servo-controlled motor, by monitoring the actual motor position and adjusting the motor excitation in accordance with the difference between the actual and commanded position to minimize the difference therebetween. Unlike the servo-controlled motor, the stepping motor can also be controlled in an open looped fashion were there is no monitoring of the actual position and comparison with the commanded position.
A typical stepping motor is excited from a stepping motor translator with pulsed excitation signals. The stepping motor translator is driven by pulses which each represent an increment (typically 1.8 degrees) of stepping motor shaft rotation. In response to the application of pulses, the stepping motor translator excites the stepping motor, causing the stepping motor shaft to rotate through an arc determined by the total number of applied pulses. The frequency of the pulse train applied to the stepping motor translator determines the velocity of stepping motor rotation.
The stepping motor shaft inertia prevents the stepping motor from instantaneously achieving a constant velocity in response to the application of a constant frequency pulse train to the stepping motor translator. To assure timely response to an input command, the stepping motor must be accelerated or decelerated to reach the desired steady state rate. A problem in stepping motor control is to assure that the motor acceleration and deceleration does not exceed the physical limitations of the stepping motor. If the commanded stepping motor acceleration or deceleration is too high, then the stepping motor shaft position may not keep up with or will be ahead of the commanded position, as number of pulses, and positional accuracy will be lost. In an open loop system, which lacks position comparison, the motor not responding to pulses or rotating due to inertia of the motor and/or system without pulses being applied results in a position error which cannot be corrected without reinitializing the system.
Prior art stepping motor controllers whether they be of the stand-alone type or an integral element of a larger control system usually require that the user specify the slope or the rate of velocity change in order for the stepping motor controller to control motor acceleration and deceleration. For the sophisticated user, inputting the motor acceleration and deceleration in accordance with the acceleration and deceleration value is not necessarily a disadvantage because the sophisticated user can match the motor acceleration and deceleration in accordance with the physical limitations of the stepping motor and its driven load to achive relatively efficient stepping motor operation. For the unsophisticated machine user, the ease of inputting parameters for the operation of the stepping motor is more important. Users are often familiar with the time intervals in which a stepping motor is to accelerate or decelerate. However, prior stepping motor controllers do not allow the user to program the stepping motor acceleration or deceleration directly from the acceleration or deceleration intervals. Rather, the user must first calculate the acceleration and deceleration values in accordance with the acceleration and deceleration intervals, respectively.
In a large system, the stepping motor is but one of a number of devices which are to be simultaneously controlled. To facilitate control of many different devices programmable controllers are often employed to communicate with all of the devices within a regulated period of time. To control the stepping motor, the programmable controller determines the number of and frequency of pulses to be supplied to the stepping motor to accomplish a stepping motor move profile and accordingly, applies the pulses to the stepping motor translator. In the past, programmable controllers for controlling a stepping motor have accomplished the complex processing functions to calculate the number of stepping motor pulses within the central processing unit. Incorporating the complex processing functions within the central processing unit of the programmable controller incurs the disadvantage that the rate at which the central processor can communicate with the controlled devices may be adversely affected. Also, incorporation of the complex calculating functions within the central processing unit may also limit the ability of the central processing unit to control multiple stepper motors.